﻿namespace Contoso.ActiveDirectory {

    #region Usings
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    #endregion

    public interface IExchangeExtensionAttributes {
        string ExtensionAttribute1 { get; }
        string ExtensionAttribute2 { get; }
        string ExtensionAttribute3 { get; }
        string ExtensionAttribute4 { get; }
        string ExtensionAttribute5 { get; }
        string ExtensionAttribute6 { get; }
        string ExtensionAttribute7 { get; }
        string ExtensionAttribute8 { get; }
        string ExtensionAttribute9 { get; }
        string ExtensionAttribute10 { get; }
        string ExtensionAttribute11 { get; }
        string ExtensionAttribute12 { get; }
        string ExtensionAttribute13 { get; }
        string ExtensionAttribute14 { get; }
        string ExtensionAttribute15 { get; }
        string MSExchExtensionAttribute16 { get; }
        string MSExchExtensionAttribute17 { get; }
        string MSExchExtensionAttribute18 { get; }
        string MSExchExtensionAttribute19 { get; }
        string MSExchExtensionAttribute20 { get; }
        string MSExchExtensionAttribute21 { get; }
        string MSExchExtensionAttribute22 { get; }
        string MSExchExtensionAttribute23 { get; }
        string MSExchExtensionAttribute24 { get; }
        string MSExchExtensionAttribute25 { get; }
        string MSExchExtensionAttribute26 { get; }
        string MSExchExtensionAttribute27 { get; }
        string MSExchExtensionAttribute28 { get; }
        string MSExchExtensionAttribute29 { get; }
        string MSExchExtensionAttribute30 { get; }
        string MSExchExtensionAttribute31 { get; }
        string MSExchExtensionAttribute32 { get; }
        string MSExchExtensionAttribute33 { get; }
        string MSExchExtensionAttribute34 { get; }
        string MSExchExtensionAttribute35 { get; }
        string MSExchExtensionAttribute36 { get; }
        string MSExchExtensionAttribute37 { get; }
        string MSExchExtensionAttribute38 { get; }
        string MSExchExtensionAttribute39 { get; }
        string MSExchExtensionAttribute40 { get; }
        string MSExchExtensionAttribute41 { get; }
        string MSExchExtensionAttribute42 { get; }
        string MSExchExtensionAttribute43 { get; }
        string MSExchExtensionAttribute44 { get; }
        string MSExchExtensionAttribute45 { get; }

        // multi-valued attributes
        IReadOnlyList<string> MSExchExtensionCustomAttribute1 { get; }
        IReadOnlyList<string> MSExchExtensionCustomAttribute2 { get; }
        IReadOnlyList<string> MSExchExtensionCustomAttribute3 { get; }
        IReadOnlyList<string> MSExchExtensionCustomAttribute4 { get; }
        IReadOnlyList<string> MSExchExtensionCustomAttribute5 { get; }

        void ProcessResults(Dictionary<string, object[]> attributes);
    }
}
